"""
这里定义了一些公共的方法
"""

import hashlib
import logging
from conf import settings


# 登录认证装饰器
def login_auth(func):
    """
    登录认证装饰器
    :param func: 被装饰的函数
    :return: 装饰后的函数
    """

    def wrapper(*args, **kwargs):
        # 这里写登录验证逻辑
        from core import src

        if src.logged_user:
            res = func(*args, **kwargs)
            return res
        else:
            print("请先登录！")
            src.sign_in()

    return wrapper


# 对密码进行加密
def pwd_to_sha256(password):
    """
    对密码进行加密
    :param password: 密码
    :return: 加密后的字符串
    """
    sha = hashlib.sha256()
    # update的功能是将字符串转换为字节，然后进行加密
    sha.update(password.encode("utf-8"))
    # 加点盐
    sha.update("爱你么么哒".encode("utf-8"))
    return sha.hexdigest()  # 返回加密后的字符串


# 日志记录功能
def get_logger(logger_name):

    # 创建一个Logger实例
    logger = logging.getLogger(logger_name)
    # 设置日志级别
    logger.setLevel(logging.DEBUG)

    # 设置日志存放路径
    base_path = settings.LOG_DIR + "\\"
    log_path = base_path + logger_name + ".log"
    fh = logging.FileHandler(log_path, encoding="utf-8")

    # 设置日志格式
    formatter = logging.Formatter(
        "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
    )
    fh.setFormatter(formatter)

    logger.addHandler(fh)  # 将日志输出到文件

    return logger
